﻿namespace Journey.Security
{
    /// <summary>
    /// 认证服务接口。
    /// </summary>
    public interface IAuthenticationService
    {
        /// <summary>
        /// 登录。
        /// </summary>
        /// <param name="accountNumber">用户账号。</param>
        /// <param name="name">用户昵称。</param>
        /// <param name="createPersistentCookie">如果票证将存储在持久性 Cookie 中（跨浏览器会话保存），则为 true；否则为 false。 如果该票证存储在 URL 中，将忽略此值。</param>
        void SignIn(string accountNumber, string name, bool createPersistentCookie);

        /// <summary>
        /// 登出。
        /// </summary>
        void SignOut();

        /// <summary>
        /// 获得已认证的用户。
        /// </summary>
        /// <remarks>
        /// 该方法获得的是已登录的用户，如果是未登录的，则返回 AnonymousUser 类的实例。
        /// </remarks>
        /// <returns>用户实体。</returns>
        IUser GetAuthenticatedUser();
    }
}